package com.company.view;

import javax.swing.*;

public class DemoGroupLayout {
    public static void main(String[] args) {
        JFrame jf = new JFrame("演示分组布局");
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel jp = new JPanel();
        GroupLayout layout = new GroupLayout(jp); //分组布局的面板
        jp.setLayout(layout);

        layout.setAutoCreateGaps(true);//组件之间的间隙自动适应
        layout.setAutoCreateContainerGaps(true); //容器与触到容器边框的组件之间的间隙自动适应

        JLabel lbl01 = new JLabel("账号");
        JLabel lbl02 = new JLabel("密码");
        JTextField textField01 = new JTextField("请输入~");
        JTextField textField02 = new JTextField("请输入~");
        JButton btn01 = new JButton("登录");
        JButton btn02 = new JButton("注册");

        /*
         *水平组（仅确定 X 轴方向的坐标/排列方式）
         */

        //水平并行: 垂直排列（上下排列）lbl01 和 lbl02
        GroupLayout.ParallelGroup hParalGp01 = layout.createParallelGroup();
        hParalGp01.addComponent(lbl01);
        hParalGp01.addComponent(lbl02);

        //水平并行（上下）textField01 和 textField02
        GroupLayout.ParallelGroup hParalGp02 = layout.createParallelGroup();
        hParalGp02.addComponent(textField01).addComponent(textField02);

        //水平串行（左右）hParalGp01 和 hParalGp02
        GroupLayout.SequentialGroup hSeqGp01 = layout.createSequentialGroup();
        hSeqGp01.addGroup(hParalGp01).addGroup(hParalGp02);

        //水平串行（左右）btn01 和 btn02
        GroupLayout.SequentialGroup hSeqGp02 = layout.createSequentialGroup();
        hSeqGp02.addComponent(btn01).addGap(20).addComponent(btn02); //添加 间隙

        //水平并行（上下）hSeqGp01 和 hSeqGp02
        GroupLayout.ParallelGroup hParalGroup = layout.createParallelGroup();
        hParalGroup.addGroup(hSeqGp01).addGroup(hSeqGp02);

        layout.setHorizontalGroup(hParalGroup); // 指定布局的 水平组（水平坐标）
        /*
         *垂直组（仅确定 Y 轴方向的坐标/排列方式）
         */

        // 垂直并行（左右）lbl01 和 textField01
        GroupLayout.ParallelGroup vParalGroup01 = layout.createParallelGroup()
                .addComponent(lbl01).addComponent(textField01);

        // 垂直并行（左右）lbl02 和 textField02
        GroupLayout.ParallelGroup vParalGroup02 = layout.createParallelGroup().addComponent(lbl02).addComponent(textField02);

        // 垂直并行（左右）btn01 和 btn02
        GroupLayout.ParallelGroup vParalGroup03 = layout.createParallelGroup().addComponent(btn01).addComponent(btn02);

        // 垂直串行（上下）vParalGroup01, vParalGroup02 和 vParalGroup03
        GroupLayout.SequentialGroup vSeqGroup = layout.createSequentialGroup().addGroup(vParalGroup01).addGroup(vParalGroup02).addGroup(vParalGroup03);

        layout.setVerticalGroup(vSeqGroup);    // 指定布局的 垂直组（垂直坐标）

        jf.setContentPane(jp);
        //jf.pack();
        jf.setSize(300, 150);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);  // 显示窗口

    }

}
